package clases;

import java.util.ArrayList;
import java.util.Iterator;
import jdbc.*;


public class Partido {
    private int idPartido;
    private Equipo equipoLocal;
    private int golesLocal;
    private Equipo equipoVisitante;
    private int golesVisitante;
    private Jornada jornada;

    public Partido(){}

    public Partido(int idPartido,Equipo equipoLocal, int golesLocal, Equipo equipoVisitante, int golesVisitante, Jornada jornada){
        this.idPartido = idPartido;
        this.equipoLocal = equipoLocal;
        this.golesLocal = golesLocal;
        this.equipoVisitante = equipoVisitante;
        this.golesVisitante = golesVisitante;
        this.jornada = jornada;
    }

    public int getIdPartido() {
        return idPartido;
    }

    public void setIdPartido(int idPartido) {
        this.idPartido = idPartido;
    }

    public Equipo getEquipoLocal() {
        return equipoLocal;
    }

    public void setEquipoLocal(Equipo equipoLocal) {
        this.equipoLocal = equipoLocal;
    }

    public Equipo getEquipoVisitante() {
        return equipoVisitante;
    }

    public void setEquipoVisitante(Equipo equipoVisitante) {
        this.equipoVisitante = equipoVisitante;
    }

    public int getGolesLocal() {
        return golesLocal;
    }

    public void setGolesLocal(int golesLocal) {
        this.golesLocal = golesLocal;
    }

    public int getGolesVisitante() {
        return golesVisitante;
    }

    public void setGolesVisitante(int golesVisitante) {
        this.golesVisitante = golesVisitante;
    }

    public Jornada getJornada(){
        return this.jornada;
    }

    public void setJornada(Jornada jornada){
        if(jornada instanceof Jornada){
            this.jornada = jornada;
        }
        else{
            System.out.println("Error al modificar la jornada");
        }
    }

    @Override
    public String toString(){
        return this.getEquipoLocal().getNombre()+" "+this.getGolesLocal()+" - "+this.getGolesVisitante()+" "+this.getEquipoVisitante().getNombre();
    }

    public static void altaPartidosJornada(ArrayList lista, Jornada jornada){
        Iterator it = lista.iterator();
        while(it.hasNext()){
            Partido p = (Partido)it.next();
            p.setJornada(jornada);

            PartidoJDBC.insertarPartido(p);
        }
    }

    public static ArrayList<Partido> partidosJornada(Jornada jornada){
        ArrayList <Partido> lista = PartidoJDBC.obtenerPartidosSegunJornada(jornada);
        return lista;
    }

    public void actualizarClasificacion(){
        if(this.getGolesLocal() > this.getGolesVisitante()){
            this.getEquipoLocal().anadirPunto(3);
            this.getEquipoLocal().anadirGolesCasa(this.getGolesLocal());
            this.getEquipoVisitante().anadirGolesFuera(this.getGolesVisitante());
            this.getEquipoLocal().anadirGolesEncajados(this.getGolesVisitante());
            this.getEquipoVisitante().anadirGolesEncajados(this.getGolesLocal());
        }
        else if(this.getGolesLocal() == this.getGolesVisitante()){
            this.getEquipoLocal().anadirPunto(1);
            this.getEquipoVisitante().anadirPunto(1);
            this.getEquipoLocal().anadirGolesCasa(this.getGolesLocal());
            this.getEquipoVisitante().anadirGolesFuera(this.getGolesVisitante());
            this.getEquipoLocal().anadirGolesEncajados(this.getGolesVisitante());
            this.getEquipoVisitante().anadirGolesEncajados(this.getGolesLocal());
        }
        else{
            this.getEquipoVisitante().anadirPunto(3);
            this.getEquipoLocal().anadirGolesCasa(this.getGolesLocal());
            this.getEquipoVisitante().anadirGolesFuera(this.getGolesVisitante());
            this.getEquipoLocal().anadirGolesEncajados(this.getGolesVisitante());
            this.getEquipoVisitante().anadirGolesEncajados(this.getGolesLocal());
        }
    }

    public static void actualizarPartidos(ArrayList lista){
        Iterator it = lista.iterator();
        while(it.hasNext()){
            Partido p = (Partido)it.next();
            PartidoJDBC.actualizarPartido(p);
            p.actualizarClasificacion();
        }
    }
    
}
